﻿using System.Security.Claims;

namespace CsharpTool.SignalRServer
{
    /// <summary>
    /// 消息信息
    /// </summary>
    public class MsgInfoBase
    {
        /// <summary>
        /// 消息类型
        /// </summary>
        public string? Type { get; set; }

        /// <summary>
        /// 消息分组
        /// </summary>
        public string? Group { get; set; }
    }

    /// <summary>
    /// 消息信息
    /// </summary>
    public class MsgInfo : MsgInfoBase
    {
        /// <summary>
        /// 消息内容
        /// </summary>
        public object? Data { get; set; }
    }

    /// <summary>
    /// 消息信息
    /// </summary>
    public class MsgInfo<T> : MsgInfoBase
    {
        /// <summary>
        /// 消息内容
        /// </summary>
#pragma warning disable CS8618 // 在退出构造函数时，不可为 null 的字段必须包含非 null 值。请考虑添加 "required" 修饰符或声明为可为 null。
        public T Data { get; set; }
#pragma warning restore CS8618 // 在退出构造函数时，不可为 null 的字段必须包含非 null 值。请考虑添加 "required" 修饰符或声明为可为 null。
    }

    /// <summary>
    /// 连接信息
    /// </summary>
    public class ConnectionInfo
    {
        /// <summary>
        /// 连接Id
        /// </summary>
        public string? ConnectionId { get; set; }

        /// <summary>
        /// 原始用户信息
        /// </summary>
        public ClaimsPrincipal? User { get; set; }

        /// <summary>
        /// true:已连接，false:已断开
        /// </summary>
        public bool IsConnected { get; set; }
    }
}
